package NiuKe.JianZhiOffer;

/**
 * 操作给定的二叉树，将其变换为源二叉树的镜像。
 * 比如：    源二叉树
 *             8
 *            /  \
 *           6   10
 *          / \  / \
 *         5  7 9 11
 *         镜像二叉树
 *             8
 *            /  \
 *           10   6
 *          / \  / \
 *         11 9 7  5
 * 示例1
 * 输入：
 * {8,6,10,5,7,9,11}
 * 复制
 * 返回值：
 * {8,10,6,11,9,7,5}
 */
import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class JZ18 {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param pRoot TreeNode类
     * @return TreeNode类
     */

    public TreeNode Mirror (TreeNode pRoot) {
        //将问题化简，其实就是将一棵树的每一个节点的左右子树交换位置即可

        if(pRoot != null){

            if (pRoot.left != null){
                if (pRoot.left.left != null || pRoot.left.right != null){
                    Mirror(pRoot.left);
                }

            }

            if (pRoot.right != null){
                if (pRoot.right.left != null || pRoot.right.right != null){
                    Mirror(pRoot.right);
                }

            }

            TreeNode temp = pRoot.left;
            pRoot.left = pRoot.right;
            pRoot.right = temp;

        }
        return pRoot;
    }
}